package pipecleaner.agent.core;

/**
 * Interface that represents a Command that can be executed on the host machine.  This command
 * can be a script or an executable file.    
 * 
 * @author J. Michael McGarr
 */
public interface Command {

	/**
	 * Executes the command on the host machine.
	 * 
	 * @throws FailedCommandException if the script could not execute.
	 */
	void execute() throws FailedCommandException;

	/**
	 * Provides the returnCode of the command that executed.
	 * 
	 * @return the code that was returned by the process.
	 */
	int getReturnCode();

	/**
	 * Provides the screen output or logs from the command.
	 * 
	 * @return the string output.
	 */
	String getOutput();

	String getName ();

	String getExecution ();

}
